// modeules都是配置文件
// 先建立一个模块，在建立一个模块的controller
// nest g module girl ---no-spec建立一个模块
// nest g controller girl --no-spec建立一个模块对应的路由
// nest g service girl --no-spec建立一个编写业务逻辑的service层文件
// nest g mi counter生成一个用于技术的中间件
// 直接建立一个模块，nest g res boy
import { MiddlewareConsumer, Module, NestModule, RequestMethod } from '@nestjs/common';
import { GirlController } from './girl.controller';
import { GirlService } from './girl.service';
// 引入数据库的实体
import { Girl } from './entities/girl.entity'
import { BoyService } from 'src/boy/boy.service';
import {TypeOrmModule } from "@nestjs/typeorm";
import { retry } from 'rxjs';
import { CounterMiddleware } from 'src/counter/counter.middleware';
@Module({
  // 使用这个实体类
  imports: [TypeOrmModule.forFeature([Girl])],
  controllers: [GirlController],
  // providers: [GirlService]
  providers:[BoyService ,{
    provide:"girl",  //自定义名称
    useClass:GirlService
  },{
    provide:"girlArray",
    useValue:[{id:1,name:"张三"},{id:2,name:"李四"}]
  },
  // 定义方法，factory
{
  provide:"factory",
  useFactory:()=>{
    console.log('____________factory')
    return 'console.log("____________factory")'
  }
}]
})
// 在这个到处的module中配置使用中间件
export class GirlModule implements NestModule{
  configure(consumer: MiddlewareConsumer) {
    // 设置为只在girl的路径下的get请求起作用的局部中间件
      consumer.apply(CounterMiddleware).forRoutes({path:"girl",method:RequestMethod.GET});
  }
} {}
